#pragma once

#include <cstdio>
#include <string>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>

class UdpSocket
{
public:
    UdpSocket() 
        :_sockfd(-1)    // 初始化列表，即给_sockfd变量赋初值-1
    {}
    //创建套接字
    bool Socket();
    
    //为套接字绑定地址信息
    bool Bind(const std::string &ip, uint16_t port);

    //接收数据，获取发送端地址信息
    bool Recv(std::string *buf, std::string *ip=nullptr, uint16_t *port=nullptr);

    //发送数据
    bool Send(const std::string &data, std::string &ip, const uint16_t port);

    //关闭套接字
    bool Close();

private:
    int _sockfd;
};


